#!/usr/bin/env python3
"""
智能客服助手 - 安装和运行脚本
"""

import os
import sys
import subprocess
from pathlib import Path


def run_command(command: str, description: str):
    """运行命令并显示结果"""
    print(f"\n🚀 {description}...")
    print(f"执行命令: {command}")
    
    try:
        result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True)
        print(f"✅ {description}成功")
        if result.stdout:
            print(f"输出: {result.stdout}")
        return True
    except subprocess.CalledProcessError as e:
        print(f"❌ {description}失败")
        print(f"错误: {e.stderr}")
        return False


def check_env_file():
    """检查环境变量文件"""
    env_file = Path(".env")
    env_example = Path(".env.example")
    
    if not env_file.exists():
        if env_example.exists():
            print("\n📋 请配置环境变量:")
            print("1. 将 .env.example 文件复制为 .env")
            print("2. 在 .env 文件中填入您的 API 密钥")
            print("\n示例:")
            print("copy .env.example .env")
            return False
        else:
            print("❌ 找不到 .env.example 文件")
            return False
    
    print("✅ 环境变量文件已存在")
    return True


def install_dependencies():
    """安装依赖"""
    print("\n📦 安装项目依赖...")
    
    # 检查是否有 uv
    if run_command("uv --version", "检查 uv 工具"):
        return run_command("uv sync", "安装依赖包")
    else:
        print("⚠️  未找到 uv 工具，尝试使用 pip")
        return run_command("pip install -r requirements.txt", "使用 pip 安装依赖")


def create_requirements_txt():
    """创建 requirements.txt 文件"""
    requirements = [
        "langchain-deepseek>=0.1.0",
        "langchain>=0.1.0", 
        "langchain-core>=0.1.0",
        "python-dotenv>=1.0.0",
        "fastapi>=0.100.0",
        "uvicorn>=0.23.0",
        "streamlit>=1.28.0",
        "requests>=2.31.0",
        "pydantic>=2.0.0"
    ]
    
    with open("requirements.txt", "w", encoding="utf-8") as f:
        f.write("\n".join(requirements))
    
    print("✅ requirements.txt 文件已创建")


def main():
    """主函数"""
    print("=" * 60)
    print("🤖 智能客服助手 - 安装向导")
    print("=" * 60)
    
    # 检查Python版本
    python_version = sys.version_info
    if python_version.major < 3 or (python_version.major == 3 and python_version.minor < 8):
        print("❌ 需要 Python 3.8 或更高版本")
        return 1
    
    print(f"✅ Python 版本: {python_version.major}.{python_version.minor}.{python_version.micro}")
    
    # 创建 requirements.txt
    if not Path("requirements.txt").exists():
        create_requirements_txt()
    
    # 安装依赖
    if not install_dependencies():
        print("\n❌ 依赖安装失败，请检查网络连接或手动安装")
        return 1
    
    # 检查环境变量
    if not check_env_file():
        return 1
    
    print("\n" + "=" * 60)
    print("🎉 安装完成！")
    print("=" * 60)
    print("\n📋 可用的运行命令:")
    print("1. 命令行版本:    python main.py")
    print("2. Web界面版本:   streamlit run web_app.py")
    print("3. API服务版本:   uvicorn api_server:app --reload")
    print("\n💡 提示:")
    print("- 确保在 .env 文件中配置了正确的 API 密钥")
    print("- Web界面默认运行在 http://localhost:8501")
    print("- API服务默认运行在 http://localhost:8000")
    print("- API文档可以在 http://localhost:8000/docs 查看")
    
    return 0


if __name__ == "__main__":
    exit_code = main()
    sys.exit(exit_code)
